const str = 'Test';
export enum Invalid {
  a = str, // Variable assignment
  b = {}, // Object assignment
  d = new Set(1, 2, 3), // Constructor in assignment
  e = 2 + 2 // Expression assignment
}

//github
enum InvalidObject {
  A = {},
}

enum InvalidArray {
  A = [],
}

enum InvalidTemplateLiteral {
  A = "foo \${0}",
}

enum InvalidConstructor {
  A = new Set(),
}

enum InvalidExpression {
  A = 2 + 2,
}

enum InvalidExpressionk {
  A = delete 2,
  B = -a,
  C = void 2,
  D = !0,
}

const variable = 'Test';
enum InvalidVariable {
  A = 'TestStr',
  B = 2,
  C,
  V = variable,
}

const Valid = { A: 2 };
enum InvalidObjectMember {
  A = 'TestStr',
  B = Valid.A,
}

enum Valid {
  A,
}
enum InvalidEnumMember {
  A = 'TestStr',
  B = Valid.A,
}

const obj = { a: 1 };
enum InvalidSpread {
  A = 'TestStr',
  B = { ...a },
}